package password

import (
	"goblog/pkg/logger"
	"golang.org/x/crypto/bcrypt"
)

// Hash 对密码 bcrypt 加密
func Hash(password string) string {

	// 第二个参数是 cost 值，建议大于12，数值越大耗费时间越长
	bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14)
	logger.LogError(err)
	return string(bytes)
}

// CheckHash 对比明文和数据库的哈希值
func CheckHash(password, hash string) bool {
	err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
	logger.LogError(err)
	return err == nil
}

// 判断字符串是否哈希过的数值
func IsHashed(str string) bool {
	// bcrypt 加密后的长度为 60
	return len(str) == 60
}
